Property/fr

Introduction

Une propriété est une information, telle qu'un nombre ou une chaîne de texte, attachée à un document FreeCAD ou à un objet d'un document. Les propriétés peuvent être visualisées et modifiées avec l'éditeur de propriétés.

Les propriétés jouent un rôle très important dans FreeCAD. Comme les objets dans FreeCAD sont "paramétriques", cela signifie que leur comportement est défini par leurs propriétés et par la manière dont ces propriétés sont utilisées comme entrée pour leurs méthodes de classe. Voir aussi Propriétés personnalisées des fonctions de Python et PropertyLink: InList et OutList

Tous les types de propriétés

Les objets créés par script personnalisés dans FreeCAD peuvent avoir des propriétés des types suivants :

Nom Unité (si applicable) Remarque
Acceleration m/s^2
AmountOfSubstance mol
Angle °
Area m^2
Bool
BoolList
Color
ColorList
CurrentDensity A/m^2
Density kg/m^3
Direction
DissipationRate m^2/s^3
Distance m
DynamicViscosity Pa*s
ElectricalCapacitance F
ElectricalConductance S
ElectricalConductivity S/m
ElectricalInductance H
ElectricalResistance Ohm
ElectricCharge C
ElectricCurrent A
ElectricPotential V
Enumeration
ExpressionEngine
File
FileIncluded
Float
FloatConstraint
FloatList
Font
Force N
Frequency Hz
HeatFlux W/m^2
Integer
IntegerConstraint
IntegerList
IntegerSet
InverseArea 1/m^2
InverseLength 1/m
InverseVolume 1/m^3
KinematicViscosity m^2/s
Length m
Link
LinkChild
LinkGlobal
LinkHidden
LinkList
LinkListChild
LinkListGlobal
LinkListHidden
LinkSub
LinkSubChild
LinkSubGlobal
LinkSubHidden
LinkSubList
LinkSubListChild
LinkSubListGlobal
LinkSubListHidden
LuminousIntensity cd
MagneticFieldStrength A/m
MagneticFlux Wb or V*s
MagneticFluxDensity T
Magnetization A/m
Map
Mass kg
Material
MaterialList
Matrix
PartShape Une propriété de Part est accessible comme suit :
Part::PropertyPartShape
Path
Percent
PersistentObject
Placement
PlacementLink
PlacementList
Position
Power W
Precision
Pressure Pa
PythonObject
Quantity
QuantityConstraint
Rotation
ShearModulus Pa
SpecificEnergy m^2/s^2 or J/kg
SpecificHeat J/kg/K
Speed m/s
Stiffness m/s^2
Stress Pa
String
StringList
Temperature K
ThermalConductivity W/m/K
ThermalExpansionCoefficient 1/K
ThermalTransferCoefficient W/m^2/K
Time s
UltimateTensileStrength Pa
UUID
VacuumPermittivity s^4*A^2 / (m^3*kg)
Vector
VectorDistance
VectorList
Velocity m/s
Volume l or m^3
VolumeFlowRate l/s or m^3/s
VolumetricThermalExpansionCoefficient 1/K
Work J
XLink
XLinkList
XLinkSub
XLinkSubList
YieldStrength Pa
YoungsModulus Pa


En interne, le nom de la propriété est préfixé par App::Property :

App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
...

Rappelez-vous qu'il s'agit de propriétés types. Un même objet peut avoir plusieurs propriétés du même type, mais avec des noms différents.

Par exemple :

obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Width")
obj.addProperty("App::PropertyFloat", "Height")

Cela indique un objet avec trois propriétés de type "Float", nommées respectivement "Length", "Width" et "Height".

Script

Voir aussi : FreeCAD Script de base.

Un objet créé par script est créé en premier, puis les propriétés lui sont attribuées.

obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")

obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Body speed")
obj.addProperty("App::PropertyBool", "VelocityEnabled", "Parameter", "Enable body speed")

En général, les propriétés Data sont affectées à l'aide de la méthode addProperty() de l'objet. D'autre part, les propriétés View sont normalement fournies automatiquement par l'objet parent à partir duquel l'objet scripté est dérivé.

Par exemple :

Néanmoins, les propriétés View peuvent également être attribuées à l'aide de la méthode addProperty() de l'objet view provider.

obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")

Code source

Dans le code source, les propriétés se trouvent dans divers fichiers src/App/Property* .

Ils sont importés et initialisés dans src/App/Application.cpp.

#include "Property.h"
#include "PropertyContainer.h"
#include "PropertyUnits.h"
#include "PropertyFile.h"
#include "PropertyLinks.h"
#include "PropertyPythonObject.h"
#include "PropertyExpressionEngine.h"